/**************************************************************************************************/
/**
 * @file     common_drv.c
 * @brief    Common driver file.
 * @version  V1.0.0
 * @date     December-2022
 * @author   Zhixin Semiconductor
 *
 * @note
 * Copyright (C) 2021-2023 Zhixin Semiconductor Ltd. All rights reserved.
 * 
 **************************************************************************************************/


//包含需要的头文件
#include "platform_cfg.h"	// 包含MCU平台配置信息的头文件
#include "common_drv.h"		// 包含SDK中常用信息的头文件




/*****************************************************************************
 * 函数: COMMON_BytesToWord
 * 功能: Convert 4 byte into a word. The first byte is the lowest byte in the word(little end).
 * 参数: bytes: it points to an array with 4 bytes.
 * 返回: 合并后的 32bits 数值
 * 说明: 1，
****************************************************************************/
uint32_t COMMON_BytesToWord(uint8_t bytes[4])
{
    uint32_t result;

    result = bytes[0] | ((uint32_t)bytes[1] << 8U) | ((uint32_t)bytes[2] << 16U)
             | ((uint32_t)bytes[3] << 24U);

    return result;
}


/*****************************************************************************
 * 函数: COMMON_Delay_us
 * 功能: 延时大约1毫秒函数
 * 参数:
 * 返回:
 * 说明: 1，在 Keil 中，当优化选项为“-O1”时：
 *			49200--在Z20K148M，160M的内核速度，延时大约1毫秒；
 *			6810--在Z20K148M，150M的内核速度，延时大约1毫秒；
 *			5455--在Z20K148M，120M的内核速度，延时大约1毫秒
 *		2，测试发现，Z20K148M处理32位数据的速度最快。
****************************************************************************/
void COMMON_Delay_us(uint32_t t)
{
	unsigned int i;
	while(t)
	{
		for(i=0; i<50; i++) CORE_NOP();	//在Z20K148M，160M的内核速度，延时大约1us
		//for(i=0; i<47; i++) CORE_NOP();	//在Z20K148M，150M的内核速度，延时大约1us
		//for(i=0; i<37; i++) CORE_NOP();	//在Z20K148M，120M的内核速度，延时大约1us
		t--;
	}
}


/*****************************************************************************
 * 函数: COMMON_Delay_ms
 * 功能: 延时大约1毫秒函数
 * 参数:
 * 返回:
 * 说明: 1，在 Keil 中，当优化选项为“-O1”时：
 *			49200--在Z20K148M，160M的内核速度，延时大约1毫秒；
 *			6810--在Z20K148M，150M的内核速度，延时大约1毫秒；
 *			5455--在Z20K148M，120M的内核速度，延时大约1毫秒
 *		2，测试发现，Z20K148M处理32位数据的速度最快。
****************************************************************************/
void COMMON_Delay_ms(uint32_t t)
{
	unsigned int i;
	while(t)
	{
		for(i=0; i<49200; i++) CORE_NOP();		//在Z20K148M，160M的内核速度，延时大约1毫秒
		//for(i=0; i<46120; i++) CORE_NOP();	//在Z20K148M，150M的内核速度，延时大约1毫秒
		//for(i=0; i<36900; i++) CORE_NOP();	//在Z20K148M，120M的内核速度，延时大约1毫秒
		t--;
	}
}





